home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / ftpser1a / winsock.bas < prev   
BASIC Source File  |  1999-08-28  |  13KB  |  273 lines

  1. Attribute VB_Name = "Winsock"
  2. Option Explicit
  3.  
  4. Global Const AF_UNSPEC = 0             '  /* unspecified */
  5. Global Const AF_UNIX = 1               '  /* local to host (pipes, portals) */
  6. Global Const AF_INET = 2               '  /* internetwork: UDP, TCP, etc. */
  7. Global Const AF_IMPLINK = 3            '  /* arpanet imp addresses */
  8. Global Const AF_PUP = 4                '  /* pup protocols: e.g. BSP */
  9. Global Const AF_CHAOS = 5              '  /* mit CHAOS protocols */
  10. Global Const AF_IPX = 6                '  /* IPX and SPX */
  11. Global Const AF_NS = 6                 '  /* XEROX NS protocols */
  12. Global Const AF_ISO = 7                '  /* ISO protocols */
  13. Global Const AF_OSI = AF_ISO           '  /* OSI is ISO */
  14. Global Const AF_ECMA = 8               '  /* european computer manufacturers */
  15. Global Const AF_DATAKIT = 9            '  /* datakit protocols */
  16. Global Const AF_CCITT = 10             '  /* CCITT protocols, X.25 etc */
  17. Global Const AF_SNA = 11               '  /* IBM SNA */
  18. Global Const AF_DECnet = 12            '  /* DECnet */
  19. Global Const AF_DLI = 13               '  /* Direct data link interface */
  20. Global Const AF_LAT = 14               '  /* LAT */
  21. Global Const AF_HYLINK = 15            '  /* NSC Hyperchannel */
  22. Global Const AF_APPLETALK = 16         '  /* AppleTalk */
  23. Global Const AF_NETBIOS = 17           '  /* NetBios-style addresses */
  24.  
  25. Global Const FD_READ = &H1
  26. Global Const FD_WRITE = &H2
  27. Global Const FD_OOB = &H4
  28. Global Const FD_ACCEPT = &H8
  29. Global Const FD_CONNECT = &H10
  30. Global Const FD_CLOSE = &H20
  31. Global Const FD_SETSIZE% = 64
  32.  
  33. Public Const SOL_SOCKET = &HFFFF
  34. Public Const SO_LINGER = &H80
  35.  
  36. Global Const INVALID_SOCKET = -1
  37. Global Const SOCKET_ERROR = -1
  38.  
  39. Global Const BAD_SOCKET = -1
  40. Global Const UNRESOLVED_HOST = -2
  41. Global Const UNABLE_TO_BIND = -3
  42. Global Const UNABLE_TO_CONNECT = -4
  43.  
  44.  
  45. Global Const WIN_SOCKET_MSG = 2000
  46. Public Const MAX_WSADescription = 257
  47. Public Const MAX_WSASYSStatus = 129
  48.  
  49. Public Const WS_VERSION_REQD As Integer = &H101
  50. Public Const WS_VERSION_MAJOR = WS_VERSION_REQD / &H100 And &HFF&
  51. Public Const WS_VERSION_MINOR = WS_VERSION_REQD And &HFF&
  52. Public Const IP_OPTIONS = 1
  53. Public Const MIN_SOCKETS_REQD = 0
  54.  
  55. '--- additional declarations
  56. 'Types
  57. Global Const SOCK_STREAM = 1
  58. Global Const SOCK_DGRAM = 2
  59. Global Const SOCK_RAW = 3
  60. Global Const SOCK_RDM = 4
  61. Global Const SOCK_SEQPACKET = 5
  62.  
  63. 'Protocol families, same as address families for now
  64. Global Const PF_UNSPEC = 0
  65. Global Const PF_UNIX = 1
  66. Global Const PF_INET = 2
  67. Global Const PF_IMPLINK = 3
  68. Global Const PF_PUP = 4
  69. Global Const PF_CHAOS = 5
  70. Global Const PF_IPX = 6
  71. Global Const PF_NS = 6
  72. Global Const PF_ISO = 7
  73. Global Const PF_OSI = AF_ISO
  74. Global Const PF_ECMA = 8
  75. Global Const PF_DATAKIT = 9
  76. Global Const PF_CCITT = 10
  77. Global Const PF_SNA = 11
  78. Global Const PF_DECnet = 12
  79. Global Const PF_DLI = 13
  80. Global Const PF_LAT = 14
  81. Global Const PF_HYLINK = 15
  82. Global Const PF_APPLETALK = 16
  83. Global Const PF_NETBIOS = 17
  84.  
  85. Public Const MAXGETHOSTSTRUCT = 1024
  86.  
  87. Public Const IPPROTO_TCP = 6
  88. Public Const IPPROTO_UDP = 17
  89.  
  90. Public Const INADDR_NONE = &HFFFF
  91. Public Const INADDR_ANY = &H0
  92.  
  93. ' Windows Sockets definitions of regular Microsoft C error constants
  94. Global Const WSAEINTR = 10004
  95. Global Const WSAEBADF = 10009
  96. Global Const WSAEACCES = 10013
  97. Global Const WSAEFAULT = 10014
  98. Global Const WSAEINVAL = 10022
  99. Global Const WSAEMFILE = 10024
  100. ' Windows Sockets definitions of regular Berkeley error constants
  101. Global Const WSAEWOULDBLOCK = 10035
  102. Global Const WSAEINPROGRESS = 10036
  103. Global Const WSAEALREADY = 10037
  104. Global Const WSAENOTSOCK = 10038
  105. Global Const WSAEDESTADDRREQ = 10039
  106. Global Const WSAEMSGSIZE = 10040
  107. Global Const WSAEPROTOTYPE = 10041
  108. Global Const WSAENOPROTOOPT = 10042
  109. Global Const WSAEPROTONOSUPPORT = 10043
  110. Global Const WSAESOCKTNOSUPPORT = 10044
  111. Global Const WSAEOPNOTSUPP = 10045
  112. Global Const WSAEPFNOSUPPORT = 10046
  113. Global Const WSAEAFNOSUPPORT = 10047
  114. Global Const WSAEADDRINUSE = 10048
  115. Global Const WSAEADDRNOTAVAIL = 10049
  116. Global Const WSAENETDOWN = 10050
  117. Global Const WSAENETUNREACH = 10051
  118. Global Const WSAENETRESET = 10052
  119. Global Const WSAECONNABORTED = 10053
  120. Global Const WSAECONNRESET = 10054
  121. Global Const WSAENOBUFS = 10055
  122. Global Const WSAEISCONN = 10056
  123. Global Const WSAENOTCONN = 10057
  124. Global Const WSAESHUTDOWN = 10058
  125. Global Const WSAETOOMANYREFS = 10059
  126. Global Const WSAETIMEDOUT = 10060
  127. Global Const WSAECONNREFUSED = 10061
  128. Global Const WSAELOOP = 10062
  129. Global Const WSAENAMETOOLONG = 10063
  130. Global Const WSAEHOSTDOWN = 10064
  131. Global Const WSAEHOSTUNREACH = 10065
  132. Global Const WSAENOTEMPTY = 10066
  133. Global Const WSAEPROCLIM = 10067
  134. Global Const WSAEUSERS = 10068
  135. Global Const WSAEDQUOT = 10069
  136. Global Const WSAESTALE = 10070
  137. Global Const WSAEREMOTE = 10071
  138. ' Extended Windows Sockets error constant definitions
  139. Global Const WSASYSNOTREADY = 10091
  140. Global Const WSAVERNOTSUPPORTED = 10092
  141. Global Const WSANOTINITIALISED = 10093
  142. Global Const WSAHOST_NOT_FOUND = 11001
  143. Global Const WSATRY_AGAIN = 11002
  144. Global Const WSANO_RECOVERY = 11003
  145. Global Const WSANO_DATA = 11004
  146. Global Const WSANO_ADDRESS = 11004
  147.  
  148. Type hostent
  149.     h_name As Long
  150.     h_aliases As Long
  151.     h_addrtype As Integer
  152.     h_length As Integer
  153.     h_addr_list As Long
  154. End Type
  155.  
  156. Public hostent As hostent
  157.  
  158. Type WSAdata
  159.     wVersion As Integer
  160.     wHighVersion As Integer
  161.     szDescription As String * MAX_WSADescription '(0 To 255) As Byte
  162.     szSystemStatus As String * MAX_WSASYSStatus  '(0 To 128) As Byte
  163.     iMaxSockets As Integer
  164.     iMaxUdpDg As Integer
  165.     lpVendorInfo As Long
  166. End Type
  167.  
  168. Public WSAdata As WSAdata
  169.  
  170. Type Inet_Address     ' IP Address in Network Order
  171.     Byte4 As Byte     '
  172.     Byte3 As Byte     '
  173.     Byte2 As Byte     '
  174.     Byte1 As Byte     '
  175. End Type
  176.  
  177. Public IPLong As Inet_Address
  178.  
  179.  
  180. 'socket address
  181. Type SockAddr
  182.     sin_family As Integer   ' Address family
  183.     sin_port As Integer     ' Port Number in Network Order
  184.     sin_addr As Long        ' IP Address as Long
  185.     sin_zero As String * 8  '(8) As Byte             ' Padding
  186. End Type
  187.  
  188. Public SockAddr As SockAddr
  189.  
  190. Public Const SockAddr_Size = 16
  191.  
  192. Type hostent_async
  193.     h_name As Long
  194.     h_aliases As Long
  195.     h_addrtype As Integer
  196.     h_length As Integer
  197.     h_addr_list As Long
  198.     h_asyncbuffer(MAXGETHOSTSTRUCT) As Byte
  199. End Type
  200.  
  201. Public hostent_async As hostent_async
  202.  
  203. Type fd_set
  204.   fd_count As Integer          '' how many are in the set
  205.   fd_array(FD_SETSIZE) As Long '' array of SOCKET handles (64)
  206. End Type
  207.  
  208. Public fd_set As fd_set
  209.  
  210. Type timeval
  211.     tv_sec As Long
  212.     tv_usec As Long
  213. End Type
  214.  
  215. Public timeval As timeval
  216.  
  217. Type LingerType
  218.     l_onoff As Integer
  219.     l_linger As Integer
  220. End Type
  221.  
  222. '---SOCKET FUNCTIONS
  223.     Public Declare Function accept Lib "wsock32.dll" (ByVal S As Long, addr As SockAddr, addrlen As Long) As Long
  224.     Public Declare Function bind Lib "wsock32.dll" (ByVal S As Long, addr As SockAddr, ByVal namelen As Long) As Long
  225.     Public Declare Function closesocket Lib "wsock32.dll" (ByVal S As Long) As Long
  226.     Public Declare Function connect Lib "wsock32.dll" (ByVal S As Long, addr As SockAddr, ByVal namelen As Long) As Long
  227.     Public Declare Function ioctlsocket Lib "wsock32.dll" (ByVal S As Long, ByVal cmd As Long, argp As Long) As Long
  228.     Public Declare Function getpeername Lib "wsock32.dll" (ByVal S As Long, sName As SockAddr, namelen As Long) As Long
  229.     Public Declare Function getsockname Lib "wsock32.dll" (ByVal S As Long, sName As SockAddr, namelen As Long) As Long
  230.     Public Declare Function getsockopt Lib "wsock32.dll" (ByVal S As Long, ByVal Level As Long, ByVal optname As Long, optval As Any, optlen As Long) As Long
  231.     Public Declare Function htonl Lib "wsock32.dll" (ByVal hostlong As Long) As Long
  232.     Public Declare Function htons Lib "wsock32.dll" (ByVal hostshort As Long) As Integer
  233.     Public Declare Function inet_addr Lib "wsock32.dll" (ByVal CP As String) As Long
  234.     Public Declare Function inet_ntoa Lib "wsock32.dll" (ByVal inn As Long) As Long
  235.     Public Declare Function listen Lib